package com.aizuda.boot.modules.common.constant.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @Author sangyirong
 * @ClassName ContryEnum
 * @Version 1.0
 * @Date 2025/6/19 11:10
 */
@Getter
@AllArgsConstructor
public enum CountryEnum {

    CN("中国大陆", "China", "CN", "MDCT00000040", "zh"),
    AL("阿尔巴尼亚", "Albania", "AL", "MDCT00000006", "zh"),
    DZ("阿尔及利亚", "Algeria", "DZ", "MDCT00000052", "zh"),
    AF("阿富汗", "Afghanistan", "AF", "MDCT00000003", "zh"),
    AR("阿根廷", "Argentina", "AR", "MDCT00000010", "zh"),
    AE("阿联酋", "United Arab Emirates", "AE", "MDCT00000002", "zh"),
    AW("阿鲁巴", "Aruba", "AW", "MDCT00000013", "zh"),
    OM("阿曼", "Oman", "OM", "MDCT00000146", "zh"),
    AZ("阿塞拜疆", "Azerbaijan", "AZ", "MDCT00000014", "zh"),
    IE("爱尔兰", "Ireland", "IE", "MDCT00000085", "zh"),
    EG("埃及", "Egypt", "EG", "MDCT00000055", "zh"),
    ET("埃塞俄比亚", "Ethiopia", "ET", "MDCT00000058", "zh"),
    EE("爱沙尼亚", "Estonia", "EE", "MDCT00000054", "zh"),
    AD("安道尔", "Andorra", "AD", "MDCT00000001", "zh"),
    AO("安哥拉", "Angola", "AO", "MDCT00000009", "zh"),
    AI("安圭拉", "Anguilla", "AI", "MDCT00000005", "zh"),
    AG("安提瓜和巴布达", "Antigua & Barbuda (Inc. Redonda)", "AG", "MDCT00000004", "zh"),
    AU("澳大利亚", "Australia", "AU", "MDCT00000012", "zh"),
    AT("奥地利", "Austria", "AT", "MDCT00000011", "zh"),
    BB("巴巴多斯", "Barbados", "BB", "MDCT00000016", "zh"),
    PG("巴布亚新几内亚", "Papua New Guinea", "PG", "MDCT00000150", "zh"),
    BS("巴哈马", "Bahamas", "BS", "MDCT00000028", "zh"),
    PK("巴基斯坦", "Pakistan", "PK", "MDCT00000152", "zh"),
    PY("巴拉圭", "Paraguay", "PY", "MDCT00000157", "zh"),
    PS("巴勒斯坦", "", "PS", "MDCT00000242", "zh"),
    BH("巴林", "Bahrain", "BH", "MDCT00000021", "zh"),
    PA("巴拿马", "Panama", "PA", "MDCT00000147", "zh"),
    BR("巴西", "Brazil", "BR", "MDCT00000027", "zh"),
    BY("白俄罗斯", "Belarus", "BY", "MDCT00000031", "zh"),
    BM("百慕大", "Bermuda", "BM", "MDCT00000024", "zh"),
    BG("保加利亚", "Bulgaria", "BG", "MDCT00000020", "zh"),
    MP("北马里亚纳群岛", "", "MP", "MDCT00000240", "zh"),
    MK("北马其顿", "Macedonia, Republic of", "MK", "MDCT00000121", "zh"),
    BJ("贝宁", "Benin", "BJ", "MDCT00000023", "zh"),
    BE("比利时", "Belgium", "BE", "MDCT00000018", "zh"),
    PE("秘鲁", "Peru", "PE", "MDCT00000148", "zh"),
    IS("冰岛", "Iceland", "IS", "MDCT00000090", "zh"),
    BW("博茨瓦纳", "Botswana", "BW", "MDCT00000030", "zh"),
    PR("波多黎各", "", "PR", "MDCT00000243", "zh"),
    BA("波黑", "Bosnia-Herzegovina", "BA", "MDCT00000015", "zh"),
    PL("波兰", "Poland", "PL", "MDCT00000153", "zh"),
    BO("玻利维亚", "Bolivia", "BO", "MDCT00000026", "zh"),
    BZ("伯利兹", "Belize", "BZ", "MDCT00000032", "zh"),
    BT("不丹", "Bhutan", "BT", "MDCT00000029", "zh"),
    BF("布基纳法索", "Burkina Faso", "BF", "MDCT00000019", "zh"),
    BI("布隆迪", "Burundi", "BI", "MDCT00000022", "zh"),
    BV("布韦岛", null, "BV", "MDCT00000220", "zh"),
    KP("朝鲜", "Korea, Dem. Peoples Rep. (North)", "KP", "MDCT00000101", "zh"),
    GQ("赤道几内亚", "Equatorial Guinea", "GQ", "MDCT00000074", "zh"),
    DK("丹麦", "Denmark and Faroe Islands (Denmark)", "DK", "MDCT00000049", "zh"),
    DE("德国", "Germany", "DE", "MDCT00000047", "zh"),
    TL("东帝汶", "", "TL", "MDCT00000251", "zh"),
    TG("多哥", "Togo", "TG", "MDCT00000183", "zh"),
    DO("多米尼加", "Dominican Republic", "DO", "MDCT00000051", "zh"),
    DM("多米尼克", "Dominica", "DM", "MDCT00000050", "zh"),
    EC("厄瓜多尔", "Ecuador", "EC", "MDCT00000053", "zh"),
    ER("厄立特里亚", "Eritrea", "ER", "MDCT00000056", "zh"),
    RU("俄罗斯", "Russia", "RU", "MDCT00000161", "zh"),
    FR("法国", "France and Corsica", "FR", "MDCT00000062", "zh"),
    FO("法罗群岛", "", "FO", "MDCT00000227", "zh"),
    PF("法属波利尼西亚", "French Polynesia", "PF", "MDCT00000149", "zh"),
    GF("法属圭亚那", "French Guiana", "GF", "MDCT00000067", "zh"),
    TF("法属南部领地", null, "TF", "MDCT00000228", "zh"),
    MF("法属圣马丁", "", "MF", "MDCT00000245", "zh"),
    VA("梵蒂冈", "Vatican City", "VA", "MDCT00000200", "zh"),
    FJ("斐济", "Fiji", "FJ", "MDCT00000060", "zh"),
    PH("菲律宾", "Philippines", "PH", "MDCT00000151", "zh"),
    FI("芬兰", "Finland", "FI", "MDCT00000059", "zh"),
    CV("佛得角", "Cape Verde", "CV", "MDCT00000044", "zh"),
    FK("福克兰群岛", "Falkland Islands", "FK", "MDCT00000061", "zh"),
    GM("冈比亚", "Gambia", "GM", "MDCT00000071", "zh"),
    CG("刚果布", "Congo (Brazzaville), Republic of the", "CG", "MDCT00000035", "zh"),
    CD("刚果金", "", "CD", "MDCT00000224", "zh"),
    GD("格林纳达", "Grenada", "GD", "MDCT00000065", "zh"),
    GL("格陵兰", "Greenland", "GL", "MDCT00000070", "zh"),
    GE("格鲁吉亚", "Georgia, Republic of", "GE", "MDCT00000066", "zh"),
    CO("哥伦比亚", "Colombia", "CO", "MDCT00000041", "zh"),
    CR("哥斯达黎加", "Costa Rica", "CR", "MDCT00000042", "zh"),
    GG("根西", "", "GG", "MDCT00000230", "zh"),
    CU("古巴", "Cuba", "CU", "MDCT00000043", "zh"),
    GP("瓜德罗普", "Guadeloupe", "GP", "MDCT00000073", "zh"),
    GU("关岛", "", "GU", "MDCT00000229", "zh"),
    GY("圭亚那", "Guyana", "GY", "MDCT00000078", "zh"),
    KZ("哈萨克斯坦", "Kazakhstan", "KZ", "MDCT00000105", "zh"),
    HT("海地", "Haiti", "HT", "MDCT00000082", "zh"),
    KR("韩国", "Korea, Republic of (South)", "KR", "MDCT00000102", "zh"),
    HM("赫德岛和麦克唐纳群岛", null, "HM", "MDCT00000231", "zh"),
    NL("荷兰", "Netherlands", "NL", "MDCT00000141", "zh"),
    BQ("荷兰加勒比区", null, "BQ", "MDCT00000219", "zh"),
    SX("荷属圣马丁", null, "SX", "MDCT00000247", "zh"),
    ME("黑山", "", "ME", "MDCT00000237", "zh"),
    HN("洪都拉斯", "Honduras", "HN", "MDCT00000080", "zh"),
    DJ("吉布提", "Djibouti", "DJ", "MDCT00000048", "zh"),
    KG("吉尔吉斯斯坦", "Kyrgyzstan", "KG", "MDCT00000096", "zh"),
    KI("基里巴斯", "Kiribati", "KI", "MDCT00000098", "zh"),
    GN("几内亚", "Guinea", "GN", "MDCT00000072", "zh"),
    GW("几内亚比绍", "Guinea Bissau", "GW", "MDCT00000077", "zh"),
    GH("加纳", "Ghana", "GH", "MDCT00000068", "zh"),
    CA("加拿大", "Canada", "CA", "MDCT00000033", "zh"),
    GA("加蓬", "Gabon", "GA", "MDCT00000063", "zh"),
    KH("柬埔寨", "Cambodia", "KH", "MDCT00000097", "zh"),
    CZ("捷克", "Czech Republic", "CZ", "MDCT00000046", "zh"),
    ZW("津巴布韦", "Zimbabwe", "ZW", "MDCT00000213", "zh"),
    CM("喀麦隆", "Cameroon", "CM", "MDCT00000039", "zh"),
    QA("卡塔尔", "Qatar", "QA", "MDCT00000158", "zh"),
    KY("开曼群岛", "Cayman Islands", "KY", "MDCT00000104", "zh"),
    CC("科科斯群岛", "", "CC", "MDCT00000223", "zh"),
    HR("克罗地亚", "Croatia", "HR", "MDCT00000081", "zh"),
    KM("科摩罗", "Comoros", "KM", "MDCT00000099", "zh"),
    XK("科索沃", null, "XK", "MDCT00000257", "zh"),
    CI("科特迪瓦", "Cote d'Ivoire", "CI", "MDCT00000037", "zh"),
    KW("科威特", "Kuwait", "KW", "MDCT00000103", "zh"),
    KE("肯尼亚", "Kenya", "KE", "MDCT00000095", "zh"),
    CK("库克群岛", "", "CK", "MDCT00000225", "zh"),
    CW("库拉索", "", "CW", "MDCT00000226", "zh"),
    LV("拉脱维亚", "Latvia", "LV", "MDCT00000115", "zh"),
    LS("莱索托", "Lesotho", "LS", "MDCT00000112", "zh"),
    LA("老挝", "Laos", "LA", "MDCT00000106", "zh"),
    LB("黎巴嫩", "Lebanon", "LB", "MDCT00000107", "zh"),
    LR("利比里亚", "Liberia", "LR", "MDCT00000111", "zh"),
    LY("利比亚", "Libya", "LY", "MDCT00000116", "zh"),
    LT("立陶宛", "Lithuania", "LT", "MDCT00000113", "zh"),
    LI("列支敦士登", "Liechtenstein", "LI", "MDCT00000109", "zh"),
    RE("留尼汪", "Reunion", "RE", "MDCT00000159", "zh"),
    LU("卢森堡", "Luxembourg", "LU", "MDCT00000114", "zh"),
    RW("卢旺达", "Rwanda", "RW", "MDCT00000162", "zh"),
    RO("罗马尼亚", "Romania", "RO", "MDCT00000160", "zh"),
    MG("马达加斯加", "Madagascar", "MG", "MDCT00000120", "zh"),
    IM("马恩岛", "", "IM", "MDCT00000232", "zh"),
    MV("马尔代夫", "Maldives", "MV", "MDCT00000131", "zh"),
    MT("马耳他", "Malta", "MT", "MDCT00000129", "zh"),
    MW("马拉维", "Malawi", "MW", "MDCT00000132", "zh"),
    MY("马来西亚", "Malaysia", "MY", "MDCT00000134", "zh"),
    ML("马里", "Mali", "ML", "MDCT00000122", "zh"),
    MH("马绍尔群岛", "", "MH", "MDCT00000234", "zh"),
    MQ("马提尼克", "Martinique", "MQ", "MDCT00000126", "zh"),
    YT("马约特", "", "YT", "MDCT00000235", "zh"),
    MU("毛里求斯", "Mauritius", "MU", "MDCT00000130", "zh"),
    MR("毛里塔尼亚", "Mauritania", "MR", "MDCT00000127", "zh"),
    US("美国", "United States", "US", "MDCT00000197", "zh"),
    UM("美国本土外小岛屿", "", "UM", "MDCT00000253", "zh"),
    AS("美属萨摩亚", "", "AS", "MDCT00000217", "zh"),
    VI("美属维尔京群岛", "", "VI", "MDCT00000254", "zh"),
    MN("蒙古", "Mongolia", "MN", "MDCT00000124", "zh"),
    BD("孟加拉国", "Bangladesh", "BD", "MDCT00000017", "zh"),
    MS("蒙特塞拉特", "Monserrat", "MS", "MDCT00000128", "zh"),
    FM("密克罗尼西亚联邦", "", "FM", "MDCT00000236", "zh"),
    MM("缅甸", "Burma (Myanmar)", "MM", "MDCT00000123", "zh"),
    MD("摩尔多瓦", "Moldova", "MD", "MDCT00000119", "zh"),
    MA("摩洛哥", "Morocco", "MA", "MDCT00000117", "zh"),
    MC("摩纳哥", "Monaco", "MC", "MDCT00000118", "zh"),
    MZ("莫桑比克", "Mozambique", "MZ", "MDCT00000135", "zh"),
    MX("墨西哥", "Mexico", "MX", "MDCT00000133", "zh"),
    NA("纳米比亚", "Namibia", "NA", "MDCT00000136", "zh"),
    ZA("南非", "South Africa", "ZA", "MDCT00000210", "zh"),
    AQ("南极洲", null, "AQ", "MDCT00000218", "zh"),
    GS("南乔治亚和南桑威奇群岛", null, "GS", "MDCT00000248", "zh"),
    SS("南苏丹", "", "SS", "MDCT00000249", "zh"),
    NR("瑙鲁", "Nauru", "NR", "MDCT00000144", "zh"),
    NI("尼加拉瓜", "Nicaragua", "NI", "MDCT00000140", "zh"),
    NP("尼泊尔", "Nepal", "NP", "MDCT00000143", "zh"),
    NE("尼日尔", "Niger", "NE", "MDCT00000138", "zh"),
    NG("尼日利亚", "Nigeria", "NG", "MDCT00000139", "zh"),
    NU("纽埃", "", "NU", "MDCT00000238", "zh"),
    NF("诺福克岛", "", "NF", "MDCT00000239", "zh"),
    NO("挪威", "Norway", "NO", "MDCT00000142", "zh"),
    PW("帕劳", "", "PW", "MDCT00000241", "zh"),
    PN("皮特凯恩", "Pitcairn Islands", "PN", "MDCT00000155", "zh"),
    PT("葡萄牙", "Portugal (Azores and Madeira Islands)", "PT", "MDCT00000156", "zh"),
    GLOBAL("全球", null, "GLOBAL", "MDCT00000256", "zh"),
    JP("日本", "Japan", "JP", "MDCT00000094", "zh"),
    SE("瑞典", "Sweden", "SE", "MDCT00000167", "zh"),
    CH("瑞士", "Switzerland", "CH", "MDCT00000036", "zh"),
    SV("萨尔瓦多", "El Salvador", "SV", "MDCT00000178", "zh"),
    WS("萨摩亚", "Western Samoa", "WS", "MDCT00000207", "zh"),
    RS("塞尔维亚", "", "RS", "MDCT00000246", "zh"),
    SL("塞拉利昂", "Sierra Leone", "SL", "MDCT00000172", "zh"),
    SN("塞内加尔", "Senegal", "SN", "MDCT00000174", "zh"),
    CY("塞浦路斯", "Cyprus", "CY", "MDCT00000045", "zh"),
    SC("塞舌尔", "Seychelles", "SC", "MDCT00000165", "zh"),
    SA("沙特阿拉伯", "Saudi Arabia", "SA", "MDCT00000163", "zh"),
    BL("圣巴泰勒米", "", "BL", "MDCT00000244", "zh"),
    CX("圣诞岛", "", "CX", "MDCT00000222", "zh"),
    ST("圣多美和普林西比", "Sao Tome & Principe", "ST", "MDCT00000177", "zh"),
    SH("圣赫勒拿", "Saint Helena (Ascension and Tristan da Cunha )", "SH", "MDCT00000169", "zh"),
    KN("圣基茨和尼维斯", "Saint Christopher (St. Kitts) & Nevis", "KN", "MDCT00000100", "zh"),
    LC("圣卢西亚", "Saint Lucia", "LC", "MDCT00000108", "zh"),
    SM("圣马力诺", "San Marino", "SM", "MDCT00000173", "zh"),
    PM("圣皮埃尔和密克隆", "Saint Pierre & Miquelon", "PM", "MDCT00000154", "zh"),
    VC("圣文森特和格林纳丁斯", "Saint Vincent & the Grenadines", "VC", "MDCT00000201", "zh"),
    LK("斯里兰卡", "Sri Lanka", "LK", "MDCT00000110", "zh"),
    SK("斯洛伐克", "Slovak Republic (Slovakia)", "SK", "MDCT00000171", "zh"),
    SI("斯洛文尼亚", "Slovenia", "SI", "MDCT00000170", "zh"),
    SJ("斯瓦尔巴和扬马延", "", "SJ", "MDCT00000250", "zh"),
    SZ("斯威士兰", "Swaziland", "SZ", "MDCT00000180", "zh"),
    SD("苏丹", "Sudan", "SD", "MDCT00000166", "zh"),
    SR("苏里南", "Suriname", "SR", "MDCT00000176", "zh"),
    SB("所罗门群岛", "Solomon Islands (Inc. Santa Cruz Is.)", "SB", "MDCT00000164", "zh"),
    SO("索马里", "Somalia", "SO", "MDCT00000175", "zh"),
    TJ("塔吉克斯坦", "Tajikistan", "TJ", "MDCT00000185", "zh"),
    TH("泰国", "Thailand", "TH", "MDCT00000184", "zh"),
    TZ("坦桑尼亚", "Tanzania", "TZ", "MDCT00000194", "zh"),
    TO("汤加", "Tonga", "TO", "MDCT00000188", "zh"),
    TC("特克斯和凯科斯群岛", "Turks & Caicos Islands", "TC", "MDCT00000181", "zh"),
    TT("特立尼达和多巴哥", "Trinidad & Tobago", "TT", "MDCT00000191", "zh"),
    TR("土耳其", "Turkey", "TR", "MDCT00000190", "zh"),
    TM("土库曼斯坦", "Turkmenistan", "TM", "MDCT00000186", "zh"),
    TN("突尼斯", "Tunisia", "TN", "MDCT00000187", "zh"),
    TV("图瓦卢", "Tuvalu", "TV", "MDCT00000192", "zh"),
    TK("托克劳", "", "TK", "MDCT00000252", "zh"),
    WF("瓦利斯和富图纳", "Wallis & Futuna Islands", "WF", "MDCT00000206", "zh"),
    VU("瓦努阿图", "Vanuatu", "VU", "MDCT00000205", "zh"),
    GT("危地马拉", "Guatemala", "GT", "MDCT00000076", "zh"),
    VE("委内瑞拉", "Venezuela", "VE", "MDCT00000202", "zh"),
    BN("文莱", "Brunei Darussalem", "BN", "MDCT00000025", "zh"),
    UG("乌干达", "Uganda", "UG", "MDCT00000196", "zh"),
    UA("乌克兰", "Ukraine", "UA", "MDCT00000195", "zh"),
    UY("乌拉圭", "Uruguay", "UY", "MDCT00000198", "zh"),
    UZ("乌兹别克斯坦", "Uzbekistan", "UZ", "MDCT00000199", "zh"),
    ES("西班牙", "Spain", "ES", "MDCT00000057", "zh"),
    GR("希腊", "Greece", "GR", "MDCT00000075", "zh"),
    EH("西撒哈拉", "", "EH", "MDCT00000255", "zh"),
    SG("新加坡", "Singapore", "SG", "MDCT00000168", "zh"),
    NC("新喀里多尼亚", "New Caledonia", "NC", "MDCT00000137", "zh"),
    NZ("新西兰", "New Zealand", "NZ", "MDCT00000145", "zh"),
    HU("匈牙利", "Hungary", "HU", "MDCT00000083", "zh"),
    SY("叙利亚", "Syria", "SY", "MDCT00000179", "zh"),
    JM("牙买加", "Jamaica", "JM", "MDCT00000092", "zh"),
    AM("亚美尼亚", "Armenia", "AM", "MDCT00000007", "zh"),
    YE("也门", "Yemen", "YE", "MDCT00000208", "zh"),
    IT("意大利", "Italy", "IT", "MDCT00000091", "zh"),
    IQ("伊拉克", "Iraq", "IQ", "MDCT00000088", "zh"),
    IR("伊朗", "Iran", "IR", "MDCT00000089", "zh"),
    IL("以色列", "Israel", "IL", "MDCT00000086", "zh"),
    IN("印度", "India", "IN", "MDCT00000087", "zh"),
    ID("印度尼西亚", "Indonesia", "ID", "MDCT00000084", "zh"),
    GB("英国", "Great Britain & Northern Ireland", "GB", "MDCT00000064", "zh"),
    VG("英属维尔京群岛", "British Virgin Islands", "VG", "MDCT00000203", "zh"),
    IO("英属印度洋领地", "", "IO", "MDCT00000221", "zh"),
    JO("约旦", "Jordan", "JO", "MDCT00000093", "zh"),
    VN("越南", "Vietnam", "VN", "MDCT00000204", "zh"),
    ZM("赞比亚", "Zambia", "ZM", "MDCT00000211", "zh"),
    JE("泽西", "", "JE", "MDCT00000233", "zh"),
    TD("乍得", "Chad", "TD", "MDCT00000182", "zh"),
    GI("直布罗陀", "Gibraltar", "GI", "MDCT00000069", "zh"),
    CL("智利", "Chile", "CL", "MDCT00000038", "zh"),
    CF("中非", "Central African Republic", "CF", "MDCT00000034", "zh"),
    MO("中国澳门", "Macao", "MO", "MDCT00000125", "zh"),
    TW("中国台湾", "Taiwan", "TW", "MDCT00000193", "zh"),
    HK("中国香港", "Hong Kong", "HK", "MDCT00000079", "zh");

    /**
     * 中文国家名
     */
    private final String countryName;

    /**
     * 英文国家名
     */
    private final String countryEnglishName;

    /**
     * 国家代码
     */
    private final String countryCode;

    /**
     * 国家MDM代码
     */
    private final String countryMdmCode;

    /**
     * 语言
     */
    private final String language;


    public static String getCountryName(String countryCode) {
        for (CountryEnum value : CountryEnum.values()) {
            if (value.getCountryCode().equals(countryCode)) {
                return value.getCountryName();
            }
        }
        return null;
    }

    public static String getCountryCode(String countryName) {
        for (CountryEnum value : CountryEnum.values()) {
            if (value.getCountryName().equals(countryName)) {
                return value.getCountryCode();
            }
        }
        return null;
    }

}
